package bomberman.modelo.observadores;

import java.io.IOException;

import bomberman.modelo.Partida;
import bomberman.modelo.personajes.Bombita;
import bomberman.vista.Dimensionador;
import bomberman.vista.personajes.VistaBombitaEste;
import bomberman.vista.personajes.VistaBombitaNorte;
import bomberman.vista.personajes.VistaBombitaOeste;
import bomberman.vista.personajes.VistaBombitaSur;

public class ObservadorBombita implements IObservador {
  
  private Partida partida;
  
  public ObservadorBombita(Partida partida) {
    this.partida = partida;
  }
  
  @Override
  public void actualizar(Object arg) {
    try {
      if (!(this.partida.getGameLoop().getObjetosVivos().contains(arg))) {
        this.partida.agregarObjetoVivoYVista(arg, new VistaBombitaSur(new Dimensionador((Bombita) arg)));
      } else {
        if (((Bombita) arg).getResistencia() == 0) {
          this.partida.perderVida();
        } else {
          switch (((Bombita) arg).getDireccion()) {
            case NORTE:
              this.partida.cambiarVista(arg, new VistaBombitaNorte(new Dimensionador((Bombita) arg)));
            break;
            case SUR:
              this.partida.cambiarVista(arg, new VistaBombitaSur(new Dimensionador((Bombita) arg)));
            break;
            case OESTE:
              this.partida.cambiarVista(arg, new VistaBombitaOeste(new Dimensionador((Bombita) arg)));
            break;
            case ESTE:
              this.partida.cambiarVista(arg, new VistaBombitaEste(new Dimensionador((Bombita) arg)));
            break;
          }
        }
      }
    } catch (IOException e) {
      e.printStackTrace();
    }
  }
}
